import os
import sys
import subprocess
from pathlib import Path

def create_icns():
    """
    注意：这个函数需要你提供一个1024x1024的PNG图标文件
    将其命名为 icon_1024.png 并放在项目根目录
    """
    print("正在创建应用图标...")
    
    # 创建临时iconset目录
    iconset_dir = "icon.iconset"
    os.makedirs(iconset_dir, exist_ok=True)
    
    # 图标尺寸列表
    icon_sizes = [16, 32, 64, 128, 256, 512, 1024]
    
    # 检查是否存在源图标文件
    if not os.path.exists("icon_1024.png"):
        print("警告: 未找到icon_1024.png文件，将使用默认图标")
        return False
    
    # 为每个尺寸创建图标
    for size in icon_sizes:
        subprocess.run([
            "sips",
            "-z", str(size), str(size),
            "icon_1024.png",
            "--out", f"{iconset_dir}/icon_{size}x{size}.png"
        ])
        # 创建2x版本
        if size < 512:
            subprocess.run([
                "sips",
                "-z", str(size*2), str(size*2),
                "icon_1024.png",
                "--out", f"{iconset_dir}/icon_{size}x{size}@2x.png"
            ])
    
    # 转换为.icns文件
    subprocess.run(["iconutil", "-c", "icns", iconset_dir])
    
    # 清理临时文件
    subprocess.run(["rm", "-rf", iconset_dir])
    return True

def build_app():
    print("开始构建Mac应用...")
    
    # 创建图标
    has_icon = create_icns()
    
    # 准备PyInstaller命令
    pyinstaller_cmd = [
        "pyinstaller",
        "--clean",
        "--windowed",
        "--noconfirm",
        "--name=文件树分析器",
        "--add-data=README.md:.",
        "--add-data=requirements.txt:.",
    ]
    
    # 如果成功创建了图标，添加图标参数
    if has_icon:
        pyinstaller_cmd.append("--icon=icon.icns")
    
    # 添加主程序文件
    pyinstaller_cmd.append("mac_fd2md.py")
    
    # 运行PyInstaller
    subprocess.run(pyinstaller_cmd)
    
    print("应用程序构建完成！")
    print("你可以在dist目录下找到打包好的应用程序。")
    print("\n注意事项：")
    print("1. 首次运行可能需要在系统偏好设置->安全性与隐私中允许运行")
    print("2. 如果遇到权限问题，请尝试在终端中运行：")
    print("   xattr -cr dist/文件树分析器.app")

if __name__ == "__main__":
    build_app() 